/*
 * @Descripttion: 
 * @version: V1.0
 * @Author: ZYP
 * @Date: 2025-05-16 18:22:59
 * @LastEditors: ZYP
 * @LastEditTime: 2025-09-30 11:48:56
 */
#ifndef ZYP_LOGGER_H_
#define ZYP_LOGGER_H_


#define __DEBUG_ZYP 
#define __DEBUG_ZYP_MMC
// #define __DEBUG_ZYP_USB
#define __ZYP_DEBUG_VERIFY_CASE
// #define __DEBUG_ZYP_DATA



#ifdef __DEBUG_ZYP
    #define ZYP_DEBUG(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define ZYP_DEBUG(format, ...)
#endif
#ifdef __DEBUG_ZYP_MMC
    #define ZYP_DEBUG_MMC(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define ZYP_DEBUG_MMC(format, ...)
#endif
#ifdef __DEBUG_ZYP_USB
    #define ZYP_DEBUG_USB(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define ZYP_DEBUG_USB(format, ...)
#endif

#ifdef __DEBUG_ZYP_DATA
    #define ZYP_DEBUG_DATA(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define ZYP_DEBUG_DATA(format, ...)
#endif

#ifdef __ZYP_DEBUG_VERIFY_CASE
    #define ZYP_DEBUG_VERIFY_CASE(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define ZYP_DEBUG_VERIFY_CASE(format, ...)
#endif

enum LOG_LEVEL {    
    ZYP_LOG_LEVEL_OFF=0,
    ZYP_LOG_LEVEL_FATAL,
    ZYP_LOG_LEVEL_ERR,
    ZYP_LOG_LEVEL_WARN,
    ZYP_LOG_LEVEL_INFO,
    ZYP_LOG_LEVEL_ALL,
};
#define ZYP_LOG_FATALE(level,format, ...) \
    do { \
         if(level>=ZYP_LOG_LEVEL_FATAL)\
           printf("\n->FATAL @ FUNC:%s FILE:%s LINE:%d \n" format "\n",\
                     __func__, __FILE__, __LINE__, ##__VA_ARGS__ );\
    } while (0)

#define ZYP_LOG_ERR(level,format, ...) \
    do { \
         if(level>=ZYP_LOG_LEVEL_ERR)\
           printf("\n->ERR   @ FUNC:%s FILE:%s LINE:%d \n" format "\n",\
                     __func__, __FILE__, __LINE__, ##__VA_ARGS__ );\
    } while (0)

#define ZYP_LOG_WARN(level,format, ...) \
    do { \
         if(level>=ZYP_LOG_LEVEL_WARN)\
           printf("\n->WARN  @ FUNC:%s \n" format "\n",__func__, ##__VA_ARGS__ );\
    } while (0)

#define ZYP_LOG_INFO(level,format, ...) \
    do { \
         if(level>=ZYP_LOG_LEVEL_INFO)\
           printf("\n->INFO  \n"format"\n",##__VA_ARGS__ );\
    } while (0)

#define ZYP_LOG_DEBUG(level,format, ...) \
    do { \
         if(level>=ZYP_LOG_LEVEL_ALL)\
           printf("\n->DEBUG \n"format"\n",##__VA_ARGS__ );\
    } while (0)

#endif

